Ilova samaradorligi, foydalanuvchi tajribasi va dastlabki yuklanish vaqtini keskin yaxshilash uchun komponent kodini bo'lish bilan React lazy loading'ni qanday joriy qilishni o'rganing.
React Lazy Loading: Komponent kodini bo'lish orqali samaradorlikni oshirish
Bugungi veb-dasturlash sohasida samaradorlik eng muhim omildir. Foydalanuvchilar tez yuklanish vaqtini va silliq oʻzaro taʼsirni kutishadi. Katta hajmdagi JavaScript toʻplamlari, ayniqsa murakkab React ilovalarida, dastlabki yuklanish vaqtiga va umumiy foydalanuvchi tajribasiga sezilarli taʼsir koʻrsatishi mumkin. Bu muammoni hal qilishning kuchli usullaridan biri bu lazy loading (yalqov yuklash), xususan, komponent kodini boʻlishdir. Ushbu maqola React.lazy va Suspense yordamida React lazy loading'ni tushunish va amalga oshirish boʻyicha toʻliq qoʻllanmani taqdim etadi.
Lazy Loading va kodni bo'lish nima?
Lazy loading, shuningdek, talab boʻyicha yuklash deb ham nomlanadi, bu resurslarni (bizning holatimizda React komponentlarini) ular haqiqatda kerak boʻlgunga qadar yuklashni kechiktiradigan usuldir. Ilovaning barcha kodini oldindan yuklash oʻrniga, dastlab faqat eng muhim qismlar yuklanadi, qolgan kod esa foydalanuvchi maʼlum bir marshrutga oʻtganda yoki maʼlum bir komponent bilan oʻzaro aloqada boʻlganda asinxron tarzda yuklanadi. Bu dastlabki toʻplam hajmini sezilarli darajada kamaytiradi va interaktivlikka erishish vaqtini (TTI) yaxshilaydi.
Kod splitting (kodni boʻlish) – bu ilovangiz kodini kichikroq, boshqarilishi oson boʻlgan qismlarga (toʻplamlarga) ajratish jarayonidir. Keyin bu toʻplamlarni mustaqil ravishda va talab boʻyicha yuklash mumkin. React lazy loading komponentlarni faqat kerak boʻlganda yuklash uchun kodni boʻlish imkoniyatidan foydalanadi.
Lazy Loading va kodni bo'lishning afzalliklari
- Dastlabki yuklanish vaqtining yaxshilanishi: Dastlabki toʻplam hajmini kamaytirish orqali brauzer oldindan kamroq JavaScript kodini yuklab oladi va tahlil qiladi, bu esa sahifaning tezroq yuklanishiga olib keladi. Bu, ayniqsa, sekin tarmoq ulanishlari yoki qurilmalarida boʻlgan foydalanuvchilar uchun juda muhimdir.
- Foydalanuvchi tajribasining yaxshilanishi: Tezroq yuklanish vaqtlari yanada sezgir va yoqimli foydalanuvchi tajribasiga olib keladi, bu esa saytdan tez chiqib ketishlar sonini kamaytiradi va foydalanuvchi faolligini oshiradi.
- Resurs sarfining kamayishi: Faqat kerakli kodni yuklash ilovaning xotiradagi hajmini kamaytiradi, bu ayniqsa mobil qurilmalar uchun foydalidir.
- Yaxshilangan SEO: Qidiruv tizimlari tez yuklanadigan veb-saytlarni afzal koʻradi, bu esa veb-saytingizning qidiruv tizimidagi reytingini yaxshilashi mumkin.
React.lazy va Suspense yordamida React Lazy Loading'ni amalga oshirish
React React.lazy va Suspense yordamida komponentlarni "yalqov" usulda yuklash uchun oʻrnatilgan mexanizmni taqdim etadi. React.lazy komponentni dinamik ravishda import qilish imkonini beradi, Suspense esa komponent yuklanayotganda zaxira interfeysni (fallback UI) koʻrsatish usulini taʼminlaydi.
1-qadam: React.lazy bilan dinamik importlar
React.lazy import() funksiyasini chaqiradigan funksiyani qabul qiladi. import() funksiyasi dinamik import boʻlib, u siz "yalqov" usulda yuklamoqchi boʻlgan komponentni oʻz ichiga olgan modulga hal qilinadigan Promise'ni qaytaradi.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
Ushbu misolda, MyComponent render qilinmaguncha yuklanmaydi. import('./MyComponent') ifodasi komponentni ./MyComponent faylidan dinamik ravishda import qiladi. Eʼtibor bering, yoʻl joriy faylga nisbatan koʻrsatilgan.
2-qadam: Yuklanish holatlarini boshqarish uchun Suspense'dan foydalanish
Lazy loading komponentlarning asinxron yuklanishini oʻz ichiga olganligi sababli, siz yuklanish holatini boshqarish va komponent olinayotganda zaxira interfeysni koʻrsatish usuliga ehtiyoj sezasiz. Aynan shu yerda Suspense yordamga keladi. Suspense – bu React komponenti boʻlib, u oʻzining farzand elementlari tayyor boʻlgunga qadar ularning render qilinishini "toʻxtatib turish" imkonini beradi. U fallback propini qabul qiladi, bu esa farzand elementlar yuklanayotganda koʻrsatiladigan interfeysni belgilaydi.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Loading... Ushbu misolda Suspense komponenti MyComponentni oʻrab turibdi. MyComponent yuklanayotganda, fallback propi () render qilinadi. MyComponent yuklanib boʻlgach, u zaxira interfeysni almashtiradi.
Misol: React Router ilovasida marshrutni Lazy Loading qilish
Lazy loading React Router ilovasidagi marshrutlar uchun ayniqsa foydalidir. Siz ilovangizning butun sahifalari yoki boʻlimlarini "yalqov" usulda yuklashingiz mumkin, bu esa veb-saytingizning dastlabki yuklanish vaqtini yaxshilaydi.
import React, { lazy, Suspense } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const Home = lazy(() => import('./pages/Home'));
const About = lazy(() => import('./pages/About'));
const Contact = lazy(() => import('./pages/Contact'));
function App() {
return (
Loading...